home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / woop.com / DEMO.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-07  |  8.1 KB  |  309 lines

  1. /*    Better-C
  2.  
  3.     Object-oriented Window managenment library demo
  4.  
  5.     Overlapping windows, pop-up menus, pop-up prompts, and
  6.     general video/keyboard functions
  7.  
  8.     Remarks
  9.  
  10.     Demo also serves as unit test for module
  11.  
  12.     See window.doc for full interface documentation
  13.  
  14. */
  15.  
  16.  
  17.  
  18.  
  19. #define UNIT_TEST
  20.  
  21. #include <stdlib.h>
  22.  
  23. #include "\better-c\window.d"
  24.  
  25. #ifdef UNIT_TEST
  26.  
  27. /*    Better-C Natural Language delimiters */
  28.  
  29. #define begin                  {
  30. #define begin_while            {
  31. #define begin_if               {
  32. #define begin_else             {
  33. #define begin_loop             {
  34. #define begin_for              {
  35. #define begin_switch           {
  36. #define begin_function         {
  37. #define begin_main         {
  38.  
  39. #define end                    }
  40. #define end_while              }
  41. #define end_if                 }
  42. #define end_else               }
  43. #define end_loop               }
  44. #define end_for                }
  45. #define end_switch             }
  46. #define end_function           }
  47. #define end_main           }
  48.  
  49. #define Window_title        "OOP Window Management Library Demo.  Better-C Example."
  50. #define Window_copyright    "Copyright (c) 1989, Silico-Magnetic Intelligence"
  51. #define SMI_address        "                    24 Jean Lane, Chestnut Ridge, NY 10952"
  52. #define SMI_phone        "                    914 426-2610"
  53. #define Better_C_title        "Better-C. Methodology and Program Generator."
  54. #define Better_C_motto        "Double Your Productivity or Your Money Back!"
  55.  
  56. #define Description_1        "Each window object is defined by a data structure and "
  57. #define Description_2        "operations such as put, remove, etc."
  58. #define Description_3        "Source code of OOP Window library is part of Better-C."
  59. #define Description_4           "Better-C is priced at     $98.00"
  60. #define Description_5        "  with Top-Down Designer $169.00"
  61. #define Description_6        "Press  Enter  to step through the demo! "
  62.  
  63.  
  64. #define Wdw_max        10
  65. #define Line_len    80
  66. #define Translate_steps 5
  67. #define Hor_translate    30
  68.  
  69. #define Demo_dr_0    0
  70. #define Demo_dc_0    0
  71. #define Demo_rows_0    24
  72. #define Demo_cols_0    79
  73. #define Fill_0          249
  74.  
  75. #define Demo_dr_1    10
  76. #define Demo_dc_1    20
  77. #define Demo_rows_1    10
  78. #define Demo_cols_1    50
  79.  
  80. #define Demo_dr_2    12
  81. #define Demo_dc_2    5
  82. #define Demo_rows_2    8
  83. #define Demo_cols_2    60
  84.  
  85.  
  86. #define Demo_brdr_attr    12
  87. #define Demo_back_attr   6
  88. #define Text_attr      2
  89.  
  90. #define R_offset    4
  91. #define C_offset    8
  92. #define R_pos        1
  93. #define C_pos        15
  94.  
  95. #define Pop_row        20
  96. #define Pop_col        6
  97. #define Pop_message    "Pop-up prompt for easy key entry"
  98. #define Pop_length      20
  99. #define Pop_menu_row    10
  100. #define Pop_menu_col    30
  101. #define Pop_menu_title      "Pop-up Menus Are Great!"
  102. #define Pop_menu_choices     "Edit|Save|Load|Review|Quit"
  103. #define Scroll_message         " Scrolling windows "
  104.  
  105. #define Count_down_stop    14
  106. #define Corner_row_max  12
  107. #define Corner_col_max    49
  108. #define Finale_loop    100
  109. #define Finale_row    12
  110. #define Finale_col    10
  111. #define Finale_message  "Finale of objects about to commence.... Hold down <enter>."
  112. #define Count_down_pattern "  End of demo --> %d "
  113. #define Count_down_row    22
  114. #define Count_down_col    31
  115. #define Bottom_line    25
  116.  
  117.  
  118. #define Object_indication    " Object %d "
  119. #define Number_envelope        " %d "
  120. #define R_1    3
  121. #define R_2    5
  122. #define R_3    6
  123. #define R_4    8
  124. #define R_5    10
  125. #define R_6    11
  126. #define R_7    13
  127. #define R_8    14
  128. #define R_9    16
  129. #define R_10    18
  130. #define R_11    19
  131. #define R_12    22
  132.  
  133.  
  134. #define Counter_show    777
  135. #define Counter_row     6
  136. #define Counter_col     16
  137.  
  138. #define Col        7
  139. #define Space       32
  140. #define No_of_colors    8
  141.  
  142.  
  143. void wdw_demo_object_message( int);
  144. void wdw_test();
  145.  
  146.  
  147. void main() begin_main  wdw_test(); end_main
  148.  
  149. void wdw_test()
  150. begin_function
  151.     char ss[ Line_len];
  152.     int window[ Wdw_max], number, i, j, k;
  153.     int random_row, random_col, attribute;
  154.  
  155.     handle_start();
  156.     wdw_start();
  157.     clear_screen();
  158.     cursor_off();
  159.         window[0] = wdw_open();
  160.     if( mono() )                    /* used as default several times */
  161.       attribute = Black On White;
  162.     else
  163.       attribute = Yellow On Blue;
  164.  
  165. /*    Display demo title page */
  166.         wdw_init         ( window[0], Demo_rows_0, Demo_cols_0);
  167.     wdw_init_style   ( window[0], Double_border, Demo_brdr_attr,
  168.                        Demo_back_attr, 0);
  169.     wdw_init_position( window[0], Demo_dr_0, Demo_dc_0);
  170.  
  171.     wdw_put    (window[0]);
  172.         wdw_demo_object_message( window[0] );
  173.     wdw_display (window[0], R_1,  Col, Window_title,     Text_attr);
  174.     wdw_display (window[0], R_2,  Col, Window_copyright,     Text_attr);
  175.     wdw_display (window[0], R_3,  Col, SMI_address,     Text_attr);
  176.     wdw_display (window[0], R_4,  Col, SMI_phone,         Text_attr);
  177.     wdw_display (window[0], R_5,  Col, Better_C_title,     Text_attr);
  178.     wdw_display (window[0], R_6,  Col, Better_C_motto,     Text_attr);
  179.     wdw_display (window[0], R_7,  Col, Description_1,     Text_attr);
  180.     wdw_display (window[0], R_8,  Col, Description_2,     Text_attr);
  181.     wdw_display (window[0], R_9,  Col, Description_3,     Yellow     );
  182.     wdw_display (window[0], R_10, Col, Description_4,     Hi_red   );
  183.     wdw_display (window[0], R_11, Col, Description_5,     Hi_red   );
  184.     wdw_display (window[0], R_12, Col, Description_6,     Text_attr);
  185.         getch();
  186.  
  187. /*    Pop up prompt demo */
  188.     pop_up_prompt( Pop_row, Pop_col, Pop_length, Green,
  189.                Yellow, Cyan, Pop_message, ss);
  190.     display( Pop_row, Pop_col, ss, attribute);
  191.     cursor(1, 1);
  192.         getch();
  193.  
  194. /*     Pop up menu demo  */
  195.     k = pop_up_menu( Pop_menu_row, Pop_menu_col,
  196.                  Hi_red, Cyan, attribute,
  197.                          Pop_menu_title, Pop_menu_choices);
  198.     sprintf( ss, Number_envelope, k);
  199.     display( Pop_row + 1, Pop_col, ss, attribute);
  200.         getch();
  201.     cursor_off();
  202.  
  203. /*       Nest overlapping windows */
  204.     for (i = 1; i < Wdw_max; i++)
  205.     begin_for
  206.           window[i] = wdw_open();
  207.           wdw_init ( window[i], R_offset + i, C_offset + 3*i);
  208.       wdw_init_style   ( window[i], (i % 4), i,
  209.                             i % No_of_colors + 1, 0 );
  210.       wdw_init_position( window[i], R_pos+i, C_pos + 2 * i);
  211.       wdw_fill   (window[i], 96+i);
  212.       wdw_put    (window[i]);
  213.           wdw_demo_object_message( window[i] );
  214.       getch();
  215.     end_for
  216.  
  217. /*    run up a counter in last window */
  218.     j = Wdw_max - 1;
  219.     for (i = 0; i <= Counter_show; i++)
  220.     begin_for
  221.       sprintf( ss, Number_envelope, i);
  222.       wdw_display( window[j], Counter_row, Counter_col, ss,
  223.                attribute);
  224.     end_for
  225.  
  226.     keyboard_flush();
  227. /*    scroll down/up last window */
  228.     wdw_scroll_down( window[j], Scroll_message );
  229.     getch();
  230.     wdw_scroll_up_routine( window[j] );
  231.     wdw_refresh( window[j]);
  232.     getch();
  233.  
  234. /*    translate last window */
  235.     for (i = 1; i <= Translate_steps; i++)
  236.     begin_for
  237.       wdw_remove( window[j] );
  238.       wdw_init_position( window[j], R_pos+j - i, C_pos + 2 * j + 2 * i);
  239.       wdw_put    (window[j]);
  240.       getch();
  241.     end_for
  242.  
  243. /*    translate last window at full speed */
  244.     for (i = 1; i <= Hor_translate; i++)
  245.     begin_for
  246.       wdw_remove( window[j] );
  247.       wdw_init_position( window[j], R_pos+j - Translate_steps,
  248.                     C_pos + 2 * j - i);
  249.       wdw_put    (window[j]);
  250.     end_for
  251.     getch();
  252.  
  253.  
  254. /*    Remove them      */
  255.  
  256.     for (i = Wdw_max-1; i >= 0; i--)
  257.     begin_for
  258.       wdw_remove( window[i] );
  259.       getch();
  260.     end_for
  261.  
  262. /*    Big finale     */
  263.     clear_screen();
  264.     display( Finale_row, Finale_col, Finale_message, Yellow On Black);
  265.     getch();
  266.         for ( k = 0; k < Finale_loop; k++)
  267.     begin_for
  268.           j = (k % (Wdw_max-2)) + 1;
  269.       random_row = random ( Corner_row_max) + 1;
  270.       random_col = random ( Corner_col_max) + 1;
  271.       wdw_init_position( window[j], random_row, random_col);
  272.       wdw_put( window[j] );
  273.       getch();
  274.         end_for
  275.  
  276. /*    End of show, make user release the keyboard */
  277.     keyboard_flush();
  278.     wdw_fill_row( window[0], R_12, Space);
  279.     wdw_put(window[0]);
  280.     for (i = 0; i <= Count_down_stop; i++)
  281.     begin_function
  282.       sprintf( ss, Count_down_pattern, Count_down_stop - i);
  283.       display( Count_down_row, Count_down_col, ss, Blue On Red);
  284.           getch();
  285.     end_function
  286.     clear_screen();
  287.  
  288. /*    Close them      */
  289.     for (i = Wdw_max-1; i >= 0; i--)
  290.       wdw_close( window[i]);
  291.     cursor_on();
  292.     wdw_end();
  293.     handle_end();
  294.  
  295. end_function
  296.  
  297. void wdw_demo_object_message( int handle)
  298. begin_function
  299.     char ss[ Line_len];
  300.     sprintf( ss, Object_indication, handle);
  301.     wdw_display (handle, 1, 1, ss, Text_attr);
  302. end_function
  303.  
  304. #endif
  305.  
  306. #undef UNIT_TEST
  307.  
  308.  
  309.